/**
 * 1、在函数内部使用 return 可以返回数据 
 *    ( 若 return 之后没有任何数据则返回 undefined )
 * 2、一旦遇到 return 语句，函数会立即结束
 * 3、理解函数调用栈 ( 栈的特点: 后进先出( Last In , First Out ) )
 */

// console.log(arguments.length);
// 在 node.js 环境下运行的所有 .js 文件，本质上都是在一个函数内部执行的
// console.log(arguments.callee.toString());

function test() {
    let x = 0;
    while (true) {
        // 当调用log函数时，会导致log函数对应的栈帧压入到函数调用栈的栈顶
        console.log('test: ', new Date()); // log函数执行结束后其相应的栈帧会立即弹出函数调用栈
        if (x == 5) {
            return; // 在循环中使用 return 语句会导致循环结束吗? 为什么?
        }
        x++;
    }
}

function show() {
    console.log('show : begin');
    // 当调用test函数时，会导致test函数对应的栈帧压入到函数调用栈的栈顶
    let result = test(); // test函数执行结束后其相应的栈帧会立即弹出函数调用栈
    console.log(result);
    console.log('show : end');
}

// 当调用show函数时，会导致show函数对应的栈帧压入到函数调用栈的栈顶
show(); // show函数执行结束后其相应的栈帧会立即弹出函数调用栈